---
title: Introduction
description: 'PySpur is an AI agent builder in Python. AI engineers use it to build agents, execute them step-by-step and inspect past runs.'
---

<video
controls
  muted
  loop
  playsInline
  className="block dark:hidden w-full aspect-video" src="/images/hero-light.mp4" />
<video
controls
  muted
  loop
  playsInline className="hidden dark:block w-full aspect-video" src="/images/hero-dark.mp4" />


# Why PySpur?

## 1. Rapid Feedback Loops

* **Build and test in one place**: Run the workflow, observe each node's outputs, and iterate.
* **Drag-and-drop**: Add new nodes that *just* work off-the-shelf within seconds.
* **Vendor unification**: Instead of 20 nodes for 20 vendors, unified nodes enable you to jump between eg. models quickly to see which one is best for your use case.

## 2. AI-Native

Unlike traditional workflow platforms, PySpur is AI-Native and comes with batteries included.

* **RAG**: Parse, chunk, embed, upsert data and maintain vector indices.
* **Loops**: Workflow graphs can include cycles for iterative tool calling.
* **Evals**: Score the performance of your agents to improve their robustness.
* **Tools**: >10 Popular integrations available as tools, with more to come.
* **Multimodal**: Support for video, images, audio, texts, code.

## 3. Easy Extensibility

You can add custom nodes with a simple Python decorator:

```python
@NodeRegistry.register(
    category="Integrations",
    display_name="Firecrawl Scrape",
    logo="/images/firecrawl.png"
)
class FirecrawlScrapeNode(BaseNode):
    name = "firecrawl_scrape_node"
    config_model = FirecrawlScrapeNodeConfig
    input_model = FirecrawlScrapeNodeInput
    output_model = FirecrawlScrapeNodeOutput
    category = "Firecrawl"  # This will be used by the frontend for subcategory grouping

    async def run(self, input: BaseModel) -> BaseModel:
        """
        Scrapes a URL and returns the content in markdown or structured format.
        """
        pass
```

## Next steps

The first step to documentation is setting up your editing environments.

<CardGroup cols={2}>
  <Card
    title="Example Walkthrough"
    icon="play"
    href="https://docs.pyspur.dev/example"
  >
    See PySpur in action
  </Card>
  <Card
    title="Quickstart"
    icon="rocket"
    href="https://docs.pyspur.dev/quickstart"
  >
    Install PySpur in under 2 minutes
  </Card>
</CardGroup>
